package cn.ware.house.interfaces.mapper;

import cn.ware.house.interfaces.entity.OutboundRecord;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;

/**
 * 出库记录数据访问接口，定义了对出库记录信息表（outbound_record表）进行数据库操作的方法。
 * 通过MyBatis框架，这些方法会映射到对应的SQL语句，实现与数据库的交互。
 */
@Mapper
public interface OutboundRecordMapper {
    /**
     * 根据出库记录编号查询出库记录信息，同时获取关联的商品、仓库详细信息。
     *
     * @param outboundId 出库记录编号
     * @return 对应的出库记录实体对象（包含关联的商品、仓库以及商品分类信息），如果不存在则返回null
     */
    OutboundRecord selectOutboundRecordById(Integer outboundId);

    /**
     * 查询所有出库记录信息，每个出库记录信息都包含关联的商品、仓库以及商品分类详细信息。
     *
     * @return 包含所有出库记录信息（含关联信息）的列表
     */
    List<OutboundRecord> selectAllOutboundRecords();

    /**
     * 插入出库记录信息到数据库，需处理好关联的商品和仓库等信息的插入。
     *
     * @param outboundRecord 要插入的出库记录实体对象
     * @return 受影响的行数，一般插入成功返回1
     */
    int insertOutboundRecord(OutboundRecord outboundRecord);

    /**
     * 根据出库记录编号更新出库记录信息。
     *
     * @param outboundRecord 包含更新后信息的出库记录实体对象
     * @return 受影响的行数，返回更新的行数数量
     */
    int updateOutboundRecordById(OutboundRecord outboundRecord);

    /**
     * 根据出库记录编号删除出库记录信息。
     *
     * @param outboundId 要删除的出库记录编号
     * @return 受影响的行数，删除成功返回1
     */
    int deleteOutboundRecordById(Integer outboundId);
}